#define _CRT_SECURE_NO_WARNINGS

//#include <iostream>
//#include <string>
//
//using namespace std;
//
//void test1()
//{
//	string s1("123456");
//	string::iterator it1 = s1.begin();
//	while (it1 != s1.end())
//	{
//		(*it1)++;
//		cout << *it1;
//		it1++;
//	}
//	cout << endl;
//
//	string s2(s1);
//
//	string::iterator tmp = s2.begin();
//	while (tmp != s2.end())
//	{
//		(*tmp)--;
//		tmp++;
//	}
//
//	tmp = s2.begin();
//	while (tmp != s2.end())
//	{
//		cout << *tmp;
//		tmp++;
//	}
//	cout << endl;
//
//	string::reverse_iterator it2 = s2.rbegin();
//	while (it2 != s2.rend())
//	{
//		cout << *it2;
//		it2++;
//	}
//}
//
//void test2()
//{
//	string s1("abcdef");
//	cout << s1.size() << endl;
//	cout << s1.length() << endl;
//	cout << s1.max_size() << endl;
//	cout << s1.capacity() << endl;
//
//	cout << s1.empty() << endl;
//	s1.clear();
//	cout << s1.empty() << endl;
//}
//
//void test3()
//{
//	string s1("abcdef");
//
//	//cout << s1.capacity() << endl;
//	//s1.shrink_to_fit();
//	//cout << s1.capacity() << endl;
//
//	string s2("iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii");
//	cout << s2.capacity() << endl;
//	s2.reserve(1000);
//	cout << s2.capacity() << endl;
//}
//
//void test4()
//{
//	string s1("hello world");
//	cout << s1.size() << endl;
//	s1.resize(5);
//	cout << s1 << endl;
//	cout << s1.size() << endl;
//	cout << s1.capacity() << endl << endl;
//	
//	string s2("hello world");
//	cout << s2.size() << endl;
//	s2.resize(15, 'c');
//	cout << s2 << endl;
//	cout << s2.size() << endl;
//	cout << s2.capacity() << endl << endl;
//
//	string s3("hello world");
//	cout << s3.size() << endl;
//	s3.resize(20, 'c');
//	cout << s3 << endl;
//	cout << s3.size() << endl;
//	cout << s3.capacity() << endl << endl;
//}
//
//void test5()
//{
//	string s1("abcdef");
//	cout << s1 << endl;
//	string::reverse_iterator it = s1.rbegin();
//	while (it != s1.rend())
//	{
//		cout << *it;
//		it++;
//	}
//	cout << endl;
//}
//
//void test6()
//{
//	string s1("12345678");
//	cout << s1 << endl;
//	cout << s1.capacity() << endl;
//	s1.assign("hello world!!!!!!!!!!!!");
//	cout << s1 << endl;
//	cout << s1.capacity() << endl;
//}
//
//void test7()
//{
//	string s1("12345678");
//	cout << s1 << endl;
//	s1.insert(4, 1, 'H');
//	cout << s1 << endl;
//	s1.insert(6, " hello world! ");
//	cout << s1 << endl;
//}
//
//void test8()
//{
//	string s1("abcdef");
//	cout << s1 << endl;
//	s1 += "1234";
//	cout << s1 << endl;
//	string s2("xxxxx");
//	cout << s2 << endl;
//	s1.append(s2);
//	cout << s1 << endl;
//}
//
//void test9()
//{
//	string s1("abcdef");
//	cout << s1 << endl;
//	reverse(s1.begin(), s1.end());
//	cout << s1 << endl;
//}
//
//void test10()
//{
//	auto a = 10;
//	auto b = 12;
//
//	cout << max(a, b) << endl;
//}
//
//int main() 
//{
//	//test1();
//	//test2();
//	//test3();
//	//test4();
//	//test5();
//	//test6();
//	//test7();
//	//test8();
//	//test9();
//	test10();
//
//	return 0;
//}


#include <iostream>
#include <string>
using namespace std;

class Solution {
public:
    Solution(string s = "hehe")
        :_s(s)
    {}

    string reverseWords(string s) {
        int tmp = 0, cur = 0, k = 0;
        while (cur <= s.size() && k <= s.size())
        {
            cur = tmp;
            while (tmp <= s.size() && s[tmp] != ' ' && s[tmp] != '\0')
                tmp++;
            k = tmp - 1;

            int begin = cur;
            int end = k;
            while (begin < end)
            {
                char c = s[begin];
                s[begin] = s[end];
                s[end] = c;
                begin++;
                end--;
            }

            tmp++;
        }
        return s;
    }

private:
    string _s;
};

int main()
{
    Solution s1("Let's take LeetCode contest");

    string s = s1.reverseWords("Let's take LeetCode contest");
    
    cout << s << endl;

    return 0;
}